﻿using System;
using System.Threading;
using Microsoft.Practices.CompositeUI;
using Microsoft.Practices.CompositeUI.EventBroker;
using NetROS.Tiers.Data;
using NetROS.Tiers.Entities;
using NetRosApp.Infrastructure.Interface;
using NetRosApp.Klijenti.Constants;

namespace NetRosApp.Klijenti
{
    public partial class RacunPonudaViewPresenter : RacunViewPresenter
    {
        public override void DataBindStaticForm()
        {
            base.DataBindStaticForm();
            ((IRacunPonudaView) View).DataBindStatic(_NacinPlacanjaService.GetAll());
            ((IRacunPonudaView) View).DataBindStaticOrgZiro(_OrganizacijaZiroRacunService.GetAll());
        }

        //internal void ShowIzjvestaj()
        //{

        //    base.ShowReportForDokumentTip(_entity);
        //}
        public void KreirajRačun(Dokument Entity)
        {
            if (_vezaService.GetByIDChild(Entity.ID).Count == 0)
            {
                Dokument StornoDokument = new Dokument();

                Dokument parentDokument = Entity;
                StornoDokument.Oznaka = String.Format(Entity.Oznaka);
                StornoDokument.Datum = DateTime.Now;
                StornoDokument.IDOrganizacijaOd = Entity.IDOrganizacijaOd;
                StornoDokument.IDOrganizacijaOdSource = Entity.IDOrganizacijaOdSource;
                StornoDokument.IDOrganizacijaPrema = Entity.IDOrganizacijaPrema;
                StornoDokument.PorezNabavneVrijednosti = Entity.PorezNabavneVrijednosti;
                StornoDokument.IDDokumentTip = (int) DokumentTipList.Racun_otpremnica;
                StornoDokument.DateCreated = DateTime.Now;
                StornoDokument.DateModified = DateTime.Now;
                Djelatnik currentdjelatnik = _djelatnikService.GetByNaziv(Thread.CurrentPrincipal.Identity.Name);
                StornoDokument.IDUserIzdaoSource = currentdjelatnik;
                StornoDokument.IDUserIzdao = currentdjelatnik.ID;
                StornoDokument.IDKlijent = Entity.IDKlijent;
                StornoDokument.IDKlijentSource = Entity.IDKlijentSource;
                StornoDokument.NabavnaVrijednost = Entity.NabavnaVrijednost;
                StornoDokument.Napomena = Entity.Napomena;
                StornoDokument.Napomena2 = Entity.Napomena2;
                StornoDokument.IDNacinTransporta = Entity.IDNacinTransporta;
                StornoDokument.IDValute = Entity.IDValute;
                StornoDokument.IDNacinPlacanja = Entity.IDNacinPlacanja;
                StornoDokument.DatumDo = Entity.DatumDo;
                StornoDokument.IDOrganizacijaZiroRacun = Entity.IDOrganizacijaZiroRacun;


                foreach (DokumentStavka tmpstav in Entity.DokumentStavkaCollection)
                {
                    DokumentStavka nova = new DokumentStavka();

                    nova.IDArtikl = tmpstav.IDArtikl;
                    if (nova.IDArtikl != null)
                        nova.IDArtiklSource =
                            _ArtiklService.DeepLoadByID(nova.IDArtikl.Value, true, DeepLoadType.IncludeChildren,
                                                        typeof (ArtiklMjera));
                    nova.Kolicina = tmpstav.Kolicina;
                    nova.Kolicina2 = tmpstav.Kolicina2;
                    nova.Kolicina3 = tmpstav.Kolicina3;
                    nova.Vrijednost = tmpstav.Vrijednost;
                    nova.Vrijednost2 = tmpstav.Vrijednost2;
                    nova.Vrijednost3 = tmpstav.Vrijednost3;
                    nova.Postotak = tmpstav.Postotak;
                    nova.IDValuta = tmpstav.IDValuta;
                    nova.IDValuta2 = tmpstav.IDValuta2;
                    nova.IDOrgJedOd = tmpstav.IDOrgJedOd;
                    nova.Vrijednost4 = tmpstav.Vrijednost4;
                    nova.Postotak2 = tmpstav.Postotak2;
                    nova.Postotak3 = tmpstav.Postotak3;
                    nova.Postotak4 = tmpstav.Postotak4;
                    nova.Prilagoden = tmpstav.Prilagoden;
                    nova.PrilagodenJedMj = tmpstav.PrilagodenJedMj;
                    StornoDokument.DokumentStavkaCollection.Add(nova);
                }
                foreach (DokumentDodatak tmpstav in Entity.DokumentDodatakCollection)
                {
                    DokumentDodatak nova = new DokumentDodatak();
                    nova.Opis = tmpstav.Opis;
                    nova.Iznos = tmpstav.Iznos;
                    StornoDokument.DokumentDodatakCollection.Add(nova);
                }

                Veza novaveza = new Veza();
                novaveza.IDChild = parentDokument.ID;
                novaveza.IDChildSource = parentDokument;
                novaveza.IDParent = StornoDokument.ID;


                StornoDokument.VezaCollectionGetByIDParent.Add(novaveza);

                _dokumentService.DeepSave(StornoDokument, DeepSaveType.IncludeChildren, typeof (TList<DokumentStavka>),
                                          typeof (TList<Veza>));

                //foreach (DokumentDodatak tmpstav in Entity.DokumentDodatakCollection)
                //{

                //    DokumentDodatak nova = new DokumentDodatak();
                //    nova.Opis = tmpstav.Opis;
                //    nova.Iznos = tmpstav.Iznos;
                //    StornoDokument.DokumentDodatakCollection.Add(nova);
                //}

                //Veza novaveza = new Veza();

                //novaveza.IDChild = parentDokument.ID;

                //novaveza.IDParent = StornoDokument.ID;
                //novaveza.IDChildSource = parentDokument;
                //StornoDokument.VezaCollectionGetByIDChild.Add(novaveza);
                //bool result = _dokumentService.DeepSave(StornoDokument, NetROS.Tiers.Data.DeepSaveType.IncludeChildren, typeof(TList<DokumentStavka>), typeof(TList<Veza>));

                //Dokument _tmpl = Entity;
                //if (result)
                //{
                //    _tmpl.IDDokumentTip = (int)DokumentTipList.Ponuda_storno;
                //    SaveData();

                //    int? IDZapisa = null;
                //    DataSet tmpset = _dokumentService.Zapisi(StornoDokument.ID, ref IDZapisa);

                //    if (IDZapisa.HasValue)
                //    {
                //        result = true;
                //    }
                //}


                // if (result)
                // {
                ////     View.DataBindEntity(_tmpl);

                //    StornoDokument = _dokumentService.GetByID(StornoDokument.ID);
                WorkItem.EventTopics[EventTopicNames.OpenCreateView].Fire(View,
                                                                          new EventArgs
                                                                              <object, object, object, object, WorkItem>
                                                                              (typeof (RacunOtpremnicaView),
                                                                               StornoDokument, null, null,
                                                                               WorkItem.Parent), WorkItem,
                                                                          PublicationScope.Global);
            }
        }


        ///// <summary>
        ///// This method is a placeholder that will be called by the view when it has been loaded.
        ///// </summary>
        //public override void OnViewReady()
        //{
        //    base.OnViewReady();
        //}

        public override void KopiranjeStavaka()
        {
         //   KopiranjeStavkiCore(_entity);
            base.KopiranjeStavaka();
        ((IRacunPonudaView)View).RefreshForma(_entity);
           
        }
    }
}